[アップデート] IAM Access Analyzer で許可しているにも関わらず未使用なアクションや未使用のIAMロールを簡単に検出できるようになりました #AWSreInvent
このIAMロールに権限与えている権限で不要なものを精査したい
こんにちは、のんピ(@non____97)です。
皆さんIAMロールに権限与えている権限で不要なものを精査したいしたいなと思ったことはありますか? 私はあります。
IAM Access Analyzerを用いることでIAMユーザー/IAMロールの実際の操作履歴からIAMポリシーを生成することは可能です。
ただし、IAMポリシーを生成する前に、各IAMユーザー/IAMロールでどのアクションが使われていないのか一覧で把握したい時があります。
今回のアップデートでIAM Access Analyzer で許可しているにも関わらず未使用なアクションや未使用のIAMロールを簡単に検出できるようになりました、
AWS Blogsにも公開されています。
これにより、不要なアクションやIAMロールを一覧で確認できるようになりました。
実際に触ってみたので紹介します。
やってみた
アナライザーの作成
まず、IAM Access AnalyzerのAnalyzerを作成します。
S3のバケットポリシーやIAMロールの信頼ポリシーなど、従来の外部アクセス許可をチェックするアナライザーとは別になります。
従来のAnalyzerは検出結果タイプ外部アクセス
のAnalyzerです。
そのため、左メニューから未使用のアクセス
をクリックしてもアナライザーは設定されていません
と表示されます。
Analyzerを作成する際は検出結果タイプで未使用のアクセス分析
を選択します。
パラメーターらしいパラメーターは追跡期間
程度です。ここで指定した日数を超えて使用されていないアクションやIAMロールが検出されます。こちらの追跡期間はAnalyzer作成後に変更することはできません。また、各検出結果タイプ毎のAnalyzerはリージョン毎に1個までです。追跡期間を変更したい場合は既存のAnalyzerを一度削除した上で作り直すことになります。
Analyzerを作成して、数分ほど待つと検出結果が表示されました。
未使用の許可の確認
検出結果のタイプが未使用の許可
で検出されているIAMロールを選択します。
下の画像のIAMロールにはAdministratorAccessを付与しています。そのため、未使用の許可が345件も検出さえています。
各行を選択すると、具体的にどのアクションが未使用なのか確認することが可能です。
未使用のロールの確認
検出結果のタイプが未使用のロール
で検出されているIAMロールを選択します。
最終使用日が決してしない
となっていますが、1年前に使用しているIAMロールです。その他検出されたIAMロールも同じくでした。そのため、追跡期間を超過したIAMロールについては一律で最終使用日は決してしない
になるように思えます。
料金
料金は以下のとおりです。
$0.20 /毎月分析される IAM ロールとユーザーの数
ざっと確認したところ、全リージョン同じ料金でした。
IAMロールやIAMユーザーが大量にあるとそれだけで料金が嵩んでしまいそうです。
こちらの機能で検出した不要なIAMロールやIAMユーザーは削除してしまいましょう。
2023/11/29 追記ここから
実際に翌日弊社のポータルから料金を確認すると、USE1-AccessFinding-Monitored-IAM-Resources
として料金が計上されていました。
検証で使っていたIAMロールが130個以上あったため、設定をしただけで26.80 USDかかっています。
ちなみに裏では何回かAnalyzerを作り直しています。そのため、「IAMロールとIAMユーザーの数 × スキャンした回数」ではないようです。
また、今回は料金が怖くて試せていないですが、外部アクセス
のAnalyzerを複数のリージョンに作成すると、「IAMロールとIAMユーザーの数 × 外部アクセス
があるAnalyzerのリージョン数」になるのではないかと予想します。
料金表にわざわざ全リージョンの場合の料金を載せているということは、外部アクセス
のAnalyzerによるIAMロールやIAMユーザーのスキャンはいずれのリージョンでも動作するのだと考えます。
無理して全リージョンで動作させても結果はリージョン間で同じすし、料金が無駄に高くなる可能性があるという点から、基本は1リージョンのみで作成するのが良いでしょう。
2023/11/29 追記ここまで
最小権限の付与の徹底やIAMロールの棚卸しに
IAM Access Analyzer で許可しているにも関わらず未使用なアクションや未使用のIAMロールを簡単に検出できるようになったアップデートを紹介しました。
検出結果タイプ外部アクセス
のAnalyzerでもOrganizations連携やアーカイブルールを用意することが可能です。
また、Security Hub経由で管理アカウントに集約することで、簡単に全アカウント、全リージョンのFindingsを確認が可能です。EventBridge Schedulerと組み合わせて各アカウント毎の定期レポートを通知するといったことも可能だと思うので、活用していきたいですね。
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!